package demo2;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class test2
{   private static boolean []flags=new boolean[201];//表示1-200的数字还能不能用，能用就是true
    private static List<Integer> list = new ArrayList<>();//数值是编号(1-200)，空间大小是101，第一个不用
    private static List<Integer> IndexList=new ArrayList<>();//记录list数组的value对应的下标//小括号里面的数字只是告诉集合要到这种程度才扩容，不是真的刚开始开了这么大的空间。不能直接去用，要手动add
  static {
        for(int i=0;i<201;i++)
        {
            IndexList.add(-1);
        }
    }
@Test
    public void main()
    {

        initArr(flags);
        func();

    }

    private static void func()
    {
       while(true)
       {   if(list.size()==2)break;//要把第一个索引0不算，占位的算上

           for(int i=1;i<list.size();)
           {
               list.remove(i);
               i=i+1;//删除之后自动往前了，只需要手动+1
           }
       }
       System.out.println("编号："+list.get(1)+"第一次的位置："+IndexList.get(list.get(1)));



    }

    private static void initArr(boolean[] flags)
    {
        for(int i=0;i<flags.length;i++)
        {
            flags[i]=true;
        }
        Random r=new Random();
        list.add(-1);
        for(int i=0;i<100;i++)
        {
            int num=r.nextInt(200)+1;
            if(flags[num]==true)
            {
                list.add(num);
                flags[num]=false;
            }
            else{
                i--;
                }
        }

//        System.out.println("123");
        IndexList.set(0,-1);
        for(int i=1;i<=100;i++)
        {
            IndexList.set(list.get(i),i);//把list数值（编号）对应的下标（索引，第几个位置）存起来
        }
//        System.out.println("1234");

    }
}
